package com.lizemin.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;


/**
 * 配置WebSocket
 *
 * @author lizemin
 */
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableSimpleBroker("/topic"); // 配置消息代理，客户端订阅消息时，需要加上这个前缀，否则无法订阅到服务端的消息
        config.setApplicationDestinationPrefixes("/app"); // 配置消息的前缀，客户端发送消息时，需要加上这个前缀，否则无法发送到服务端
    }

    /**
     * 注册STOMP消息端点
     * <p>
     * 端点（Endpoint）可看作是 WebSocket 服务在服务器上的“入口”。
     * 客户端要和服务器建立 WebSocket 连接，就需要知道连接的目标地址，而这个地址对应的就是服务器上注册的端点。
     * <p>
     * 可以通过多个端点来区分不同的服务
     */
    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        // 原有支持 SockJS 的端点
        registry.addEndpoint("/ws").withSockJS();
        // 新增不使用 SockJS 的端点
        registry.addEndpoint("/ws-no-sockjs");
    }


}    